var bXmlHttpSupport = (typeof XMLHttpRequest != "undefined" || window.ActiveXObject);

if (typeof XMLHttpRequest == "undefined" && window.ActiveXObject) {
	function XMLHttpRequest() {
		var arrSignatures = [ "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" ];
		for ( var i = 0; i < arrSignatures.length; i++) {
			try {
				var oRequest = new ActiveXObject(arrSignatures[i]);
				return oRequest;
			} catch (oError) { /* ignore */
			}
		}
		throw new Error("MSXML is not installed on your system.");
	}
}

// ==============================================================================================================
// ========================================================图片操作==============================================
// ===============================================================================================================

//点击“添加更多图片”后的操作，传入参数：对应的table对象
function addRow(tbObj) {
	var rowObj = document.createElement("tr");
	var html = "<div id='tdDIV'><input type='button' value='添加图片' id='addPic' onclick='showFileSelector(this);'/></div>";
	addOneTD(rowObj, html, "");
	addOneTD(rowObj, html, "");
	addOneTD(rowObj, html, "");
	tbObj.appendChild(rowObj);
}

function addOneTD(rowObj, fieldVaule, idName){
	var cell = document.createElement("td");
	cell.innerHTML = fieldVaule;
	if (idName != ""){
		cell.id = idName;
	}
	rowObj.appendChild(cell);
}

// 用户点击添加图片之后，生成对应的选择框
function showFileSelector(addButton) {
	var html =  "<div id='tdDIV1'><input type='file' name='image' onchange='imgChange(this)'/></div>" + 
				"<div id='tdDIV2'><img src='/PLDCarWeb/images/PicBackground.gif' alt='没有图片'/></div>"	+ 
				"<div id='tdDIV3'>图片标题：<input type='text' id='picTitle' name='imgTitle'/></div>" + 
				"<div id='tdDIV4'>图片备注：<input type='text' name='imgNote'/></div>" + 
				"<div id='tdDIV5'><input type='button' value='删除' id='delImg' onclick='delCurrentImg(this);'/></div>";
	addButton.parentNode.innerHTML = html;
}

// 用户选中一张图片之后，将图片显示出来
function imgChange(fileSelector) {
	if (!checkOneImageFormat(fileSelector)) {
		showFileSelector(fileSelector.parentNode);
		return;
	}
	if (!checkOneImageSize(fileSelector, 512000)) {
		showFileSelector(fileSelector.parentNode);
		return;
	}
	var imgObj = fileSelector.parentNode.parentNode.getElementsByTagName("img")[0];
	imgObj.src = fileSelector.value;
	fileSelector.parentNode.parentNode.getElementsByTagName("input")[1].value = pickFileName(fileSelector.value);
}

//点击删除按钮后，将该位置换回添加图片按钮
function delCurrentImg(delBtn){
	var currentDIV = delBtn.parentNode.parentNode;
	var html = 	"<input type='button' value='添加图片' id='addPic' onclick='showFileSelector(this);'/>";
	currentDIV.innerHTML = html;
}

// 检查文件的类型，传入参数fileName为文件名称，extension为文件扩展名，如果文件名称与扩展名匹配，那么返回true，否则返回false
function checkFileFormat(fileName, extension) {
	var fileExt = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length);
	fileExt = fileExt.toLowerCase();
	if (fileExt == extension) {
		return true;
	} else {
		return false;
	}
}

// 检查文件的大小，传入参数fileName为文件名称，size为文件大小，如果文件超过大小，那么返回true，否则返回false
function fileSizeExceed(fileName, size) {
	var fso = new ActiveXObject("Scripting.FileSystemObject");
	var file = fso.GetFile(fileName);
	if (file.size > size) {
		return true;
	} else {
		return false;
	}
}

// 检查选择的一张图片格式是否符合要求，如果符合要求，返回true，否则false，并且弹出提示。
function checkOneImageFormat(image) {
	var message = "图片选择出错，目前支持的图片格式为jpg，bmp, gif和png。请重新选择！";
	var flag = true;
	var imageValue = image.value;
	if (!checkFileFormat(imageValue, "jpg") && !checkFileFormat(imageValue, "bmp") && !checkFileFormat(imageValue, "png") && !checkFileFormat(imageValue, "gif")) {
		flag = false;
	}
	if (!flag) {
		alert(message);
	}
	return flag;
}

// 检查已经选择的图片格式是否符合要求，如果符合要求，返回true，否则false，并且弹出提示。
function checkImageFormat() {
	var message = "图片选择出错，目前支持的图片格式为jpg，bmp和png。格式错误的图片为：\n";
	var flag = true;
	var images = document.getElementsByName("image");
	var len = images.length;
	for ( var i = 0; i < len; i++) {
		var imageValue = images[i].value;
		if (!checkFileFormat(imageValue, "jpg") && !checkFileFormat(imageValue, "bmp") && !checkFileFormat(imageValue, "png")) {
			flag = false;
			message = message + imageValue + "\n";
		}
	}
	if (!flag) {
		alert(message);
	}
	return flag;
}

// 检查已经选择的一张图片大小是否符合要求，如果符合要求，返回true，否则false，并且弹出提示。
function checkOneImageSize(image, size) {
	var message = "图片选择出错，图片最大为512KB。请重新选择！";
	var flag = true;
	var imageValue = image.value;
	if (fileSizeExceed(imageValue, size)) {
		flag = false;
	}
	if (!flag) {
		alert(message);
	}
	return flag;
}

// 检查已经选择的图片大小是否符合要求，如果符合要求，返回true，否则false，并且弹出提示。
function checkImageSize(size) {
	var message = "图片选择出错，图片最大为512KB。超标的图片为：\n";
	var flag = true;
	var images = document.getElementsByName("image");
	var len = images.length;
	for ( var i = 0; i < len; i++) {
		var imageValue = images[i].value;
		if (fileSizeExceed(imageValue, size)) {
			flag = false;
			message = message + imageValue + "\n";
		}
	}
	if (!flag) {
		alert(message);
	}
	return flag;
}

//检查图片，如果有点击了添加图片但是没有选择图片，返回false，否则返回true
function validateImgs(){
	var flag = true;
	var fileList = document.getElementsByName("image");
	for ( var i=0; i< fileList.length; i++){
		if(fileList[i].value == ""){
			flag = false;
			break;
		}
	}
	return flag;
}

//提取一个路径字符串中的文件名并且去掉后缀名
function pickFileName(path){	
	var part = path.split("\\");//这里要将 \ 转义一下
	var fileName = part[part.length - 1];
	part = fileName.split(".");
	fileName = part[0];
	return fileName;
}

// 检查select的值，用户是否选择了值，如果已经选了，返回true，否则返回false
function selectValid(obj) {
	if (obj.value == "0") {
		return false;
	} else {
		return true;
	}
}

// 检查
function selectValid(obj) {
	if (obj.value == "0") {
		return false;
	} else {
		return true;
	}
}

function sleep(n) {
	var start = new Date().getTime();
	while (true)
		if (new Date().getTime() - start > n)
			break;
}

function checkDateTime(theDatetime) {
	var reg = /^\d{4}-((0{1}[1-9]{1})|(1[0-2]{1}))-((0{1}[1-9]{1})|([1-2]{1}[0-9]{1})|(3[0-1]{1}))\s{1}((0{1}[0-9]{1})|(1{1}[0-9]{1})|(2{1}[0-3]{1})):((0{1}[0-9]{1})|([1-5]{1}[0-9]{1})):((0{1}[0-9]{1})|([1-5]{1}[0-9]{1}))$/;
	if (!reg.test(theDatetime)) {
		return false;
	}
	var datePart = theDatetime.split(" ");
	var arr_date = datePart[0].split("-");
	if (arr_date[2] > getLastDayOfMonth(arr_date[0], arr_date[1])) {
		return false;
	}
	return true;
}

function checkTime(theDatetime) {
	var reg = /^((0{1}[0-9]{1})|(1{1}[0-9]{1})|(2{1}[0-3]{1})):((0{1}[0-9]{1})|([1-5]{1}[0-9]{1})):((0{1}[0-9]{1})|([1-5]{1}[0-9]{1}))$/;
	if (!reg.test(theDatetime)) {
		return false;
	}
	return true;
}

// 获得一个月中的最后一天
function getLastDayOfMonth(year, month) {
	var year = parseInt(year, 10);
	var month = parseInt(month, 10);
	var days = 0;
	switch (month) {
	case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12:
		days = 31;
		break;
	case 4:
	case 6:
	case 9:
	case 11:
		days = 30;
		break;
	case 2:
		if (isLeapYear(year))
			days = 29;
		else
			days = 28;
		break;
	}
	return days;
}

// 判断是否为闰年
function isLeapYear(year) {
	if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
		return true;
	else
		return false;
}

// 判断正整数
function isPositiveInteger(input) {
	var reg = /^\d+$/;
	if (!reg.test(input)) {
		return false;
	}
	return true;
}

// 判断非负浮点数
function isNotNegativeFloat(input) {
	var reg = /^\d+\.\d+$/;
	if (!reg.test(input)) {
		return false;
	}
	return true;
}

// 判断人民币格式
function isMoney(input) {
	var reg = /^\d+\.\d{2}$/;
	if (!reg.test(input)) {
		return false;
	}
	return true;
}

// 格式化人民币，小数点后保留两位小数，如果是整数，那么加两个零
function formatMoney(money) {
	money = money + "";
	var m = money.split('.');
	if (m.length == 1) {// 没有小数点
		return m[0] + ".00";
	} else {// 有小数点
		var temp = m[1];
		if (temp.length >= 2) {// 如果小数点后大于等于两位，直接截取两位
			return m[0] + "." + temp.substring(0, 2);
		} else { // 如果不够两位，补零
			if (temp.length == 0) {
				return m[0] + ".00";
			} else {
				return m[0] + "." + temp + "0";
			}
		}
	}
	// alert(s[0]+'.'+s[1].substring(0,2));
}

// 比较两个日期，如果起始时间>终止时间，返回false，否则返回true
function compare_date(start_date, end_date) {
	var date1 = start_date.replace("-", "/");
	var date2 = end_date.replace("-", "/");
	var dt1 = new Date(Date.parse(date1));
	var dt2 = new Date(Date.parse(date2));
	if (dt1 <= dt2) {
		return true;
	} else {
		return false;
	}
}

/* =============================================================================== */
/* 判断在本session中是否已经输入过管理员用户名密码，如果输入过就不用再次输入了 */
/* =============================================================================== */
function checkPass(title, condition) {
	if (bXmlHttpSupport) {
		var sUrl = 'CheckPass.action';
		var params = "action=2";
		var oRequest = new XMLHttpRequest();
		oRequest.onreadystatechange = function() {
			if (oRequest.readyState == 4) {
				// alert(oRequest.responseText);
				var oResource = eval('(' + oRequest.responseText + ')');
				print(oResource, title, condition);
			}
		};
		oRequest.open('POST', sUrl);
		oRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		oRequest.send(params);
	}
}

function str_to_date(date_string) {
	var year = date_string.substring(0, 4);
	var month = date_string.substring(5, 7);
	var day = date_string.substring(8, 10);
	return new Date(year, month, day);
}

/* =============================================================================== */
/* cookie函数 */
/* =============================================================================== */
function setCookie(c_name, value, expiredays) {
	var exdate = new Date();
	exdate.setDate(exdate.getDate() + expiredays);
	document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
}

function getCookie(c_name) {
	if (document.cookie.length > 0) {
		c_start = document.cookie.indexOf(c_name + "=");
		if (c_start != -1) {
			c_start = c_start + c_name.length + 1;
			c_end = document.cookie.indexOf(";", c_start);
			if (c_end == -1)
				c_end = document.cookie.length;
			return unescape(document.cookie.substring(c_start, c_end));
		}
	}
	return "";
}

// number表示要四舍五入的数,fractionDigits表示要保留的小数位数。
function round2(number, fractionDigits) {
	with (Math) {
		return round(number * pow(10, fractionDigits)) / pow(10, fractionDigits);
	}
}
/* =============================================================================== */
/* 日期函数 */
/* =============================================================================== */
function get_current_date() {
	var d = new Date();
	var vYear = d.getFullYear();
	var vMon = d.getMonth() + 1;
	var vDay = d.getDate();
	vMon = vMon < 10 ? "0" + vMon : vMon;
	vDay = vDay < 10 ? "0" + vDay : vDay;
	return (vYear + "-" + vMon + "-" + vDay);
}

/* ============================================================================================================= */
/* =================================================字符串处理=================================================== */
/* ============================================================================================================= */

/* =============================================================================== */
/* 判断字符串的长度是否超过某个长度，如果超出那么将超出部分截断，返回剩余部分+... */
/* =============================================================================== */
function createTitileString(str, len) {
	if (str == null) {
		return "";
	}
	if (str.length <= len) {
		return str;
	} else {
		return str.substring(0, len) + "...";
	}
}

/* =============================================================================== */
/* 判断字符串的长度是否超过某个长度，如果超出那么返回true，否则返回false */
/* =============================================================================== */
function stringExceedLengthLimit(str, len) {
	if (str == null) {
		return false;
	}
	if (str.length <= len) {
		return false;
	} else {
		return true;
	}
}

// ==============================================================================================================
// ========================================================URL解析==============================================
// ===============================================================================================================
// 传入要获取的参数的名称，返回参数的值
function getQueryString(name) {
	var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
	var r = window.location.search.substr(1).match(reg);
	if (r != null)
		return unescape(r[2]);
	return null;
}
